package com.aliang.shopping.model.converter;

import com.aliang.shopping.model.dto.common.UpdateStatusDTO;
import com.aliang.shopping.model.dto.goodsType.GoodsTypeInsertDTO;
import com.aliang.shopping.model.dto.goodsType.GoodsTypeUpdateDTO;
import com.aliang.shopping.model.po.GoodsType;
import com.aliang.shopping.model.vo.TreeVO;
import com.aliang.shopping.model.vo.goods.GoodsTypeOption;
import com.aliang.shopping.model.vo.goods.GoodsTypeVO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;

import java.util.List;

/**
 * 商品分类数据转换器
 */
@Mapper(componentModel = "Spring")
public interface GoodsTypeConverter {

    /**
     * 将商品分类插入数据传输对象转换为商品分类实体
     *
     * @param insertDTO
     * @return
     */
    GoodsType toPoByInsertDTO(GoodsTypeInsertDTO insertDTO);

    /**
     * 将商品分类更新数据传输对象转换为商品分类实体
     *
     * @param updateDTO
     * @return
     */
    GoodsType toPoByUpdateDTO(GoodsTypeUpdateDTO updateDTO);

    /**
     * 将商品分类更新状态数据传输对象转换为商品分类实体
     *
     * @param updateDTO
     * @return
     */
    GoodsType toPoByUpdateStaticDTO(UpdateStatusDTO updateDTO);

    GoodsTypeVO toVo(GoodsType po);

    List<GoodsTypeVO> toVoList(List<GoodsType> poList);

    @Mappings({
            @Mapping(source = "id", target = "value"),
            @Mapping(source = "name", target = "label")
    })
    TreeVO toTreeVo(GoodsType po);

    @Mappings({
            @Mapping(source = "id", target = "value"),
            @Mapping(source = "name", target = "label")

    })
    GoodsTypeOption toFrontTreeVo(GoodsType po);

}
